package br.com.rumus.facade;

import java.util.List;

import br.com.rumus.dao.cadastro.BairroDAO;
import br.com.rumus.dao.cadastro.ClienteDAO;
import br.com.rumus.dao.cadastro.MunicipioDAO;
import br.com.rumus.dao.cadastro.ProdutoDAO;
import br.com.rumus.dao.cadastro.UFDAO;
import br.com.rumus.dominio.cadastro.Bairro;
import br.com.rumus.dominio.cadastro.Cliente;
import br.com.rumus.dominio.cadastro.Municipio;
import br.com.rumus.dominio.cadastro.Produto;
import br.com.rumus.dominio.cadastro.UF;

public class FacadeCadastro extends Facade{

	@Override
	public void alterar(Object objeto) {
		if( objeto instanceof UF ){
			new UFDAO().alterar((UF)objeto);
		}else if( objeto instanceof Produto ){
			new ProdutoDAO().alterar((Produto)objeto);
		}else if( objeto instanceof Cliente ){
			new ClienteDAO().alterar((Cliente)objeto);
		}else if( objeto instanceof Municipio ){
			new MunicipioDAO().alterar((Municipio)objeto);
		}else if( objeto instanceof Bairro ){
			new BairroDAO().alterar((Bairro)objeto);
		}
		
	}

	@Override
	public void inserir(Object objeto) {
		if( objeto instanceof UF ){
			new UFDAO().inserir((UF)objeto);
		}else if( objeto instanceof Produto ){
			new ProdutoDAO().inserir((Produto)objeto);
		}else if( objeto instanceof Cliente ){
			new ClienteDAO().inserir((Cliente)objeto);
		}else if( objeto instanceof Municipio ){
			new MunicipioDAO().inserir((Municipio)objeto);
		}else if( objeto instanceof Bairro ){
			new BairroDAO().inserir((Bairro)objeto);
		}
	}

	@Override
	public void remover(Object objeto) {
		if( objeto instanceof UF ){
			new UFDAO().remover((UF)objeto);
		}else if( objeto instanceof Produto ){
			new ProdutoDAO().remover((Produto)objeto);
		}else if( objeto instanceof Cliente ){
			new ClienteDAO().remover((Cliente)objeto);
		}else if( objeto instanceof Municipio ){
			new MunicipioDAO().remover((Municipio)objeto);
		}else if( objeto instanceof Bairro){
			new BairroDAO().remover((Bairro)objeto);
		}
	}

	@Override
	public Object buscar(Object objeto) {
		if( objeto instanceof UF ){
			return new UFDAO().buscar(((UF)objeto).getId());
		}else if( objeto instanceof Produto ){
			return new ProdutoDAO().buscar(((Produto)objeto).getId());
		}else if( objeto instanceof Cliente ){
			return new ClienteDAO().buscar(((Cliente)objeto).getId());
		}else if( objeto instanceof Municipio ){
			return new MunicipioDAO().buscar(((Municipio)objeto).getId());
		}else if( objeto instanceof Bairro ){
			return new BairroDAO().buscar(((Bairro)objeto).getId());
		}else return null;
	}

	public List<UF> pesquisar(UF uf, int registro, int quantidade){
		return new UFDAO().pesquisar(uf,registro, quantidade);
	}
	
	public int pesquisar(UF uf){
		return new UFDAO().pesquisar(uf);
	}
	
	public List<Produto> pesquisar(Produto produto, int registro, int quantidade){
		return new ProdutoDAO().pesquisar(produto,registro, quantidade);
	}
	
	public int pesquisar(Produto produto){
		return new ProdutoDAO().pesquisar(produto);
	}
	
	public List<Cliente> pesquisar(Cliente cliente, int registro, int quantidade){
		return new ClienteDAO().pesquisar(cliente,registro, quantidade);
	}
	
	public int pesquisar(Cliente cliente){
		return new ClienteDAO().pesquisar(cliente);
	}
	
	public List<Municipio> pesquisar(Municipio municipio, int registro, int quantidade){
		return new MunicipioDAO().pesquisar(municipio,registro, quantidade);
	}
	
	public int pesquisar(Municipio municipio){
		return new MunicipioDAO().pesquisar(municipio);
	}
	
	public List<Bairro> pesquisar(Bairro bairro, int registro, int quantidade){
		return new BairroDAO().pesquisar(bairro, registro, quantidade);
	}
	
	public int pesquisar(Bairro bairro){
		return new BairroDAO().pesquisar(bairro);
	}
	
}
